#include "T_List.h"
// We need to include the CPP file since T_List is a template class. [Fox]
#include "T_List.cpp"
#include "vector.h"
#include <string>

// Start the main function [Tim]
void main()
{
	T_List<int> intList(2);
	T_List<string> stringList(2);
	T_List<Vector> vectorList(2);

	cout << "Inserting 4 items into intList...\n";
	intList.Insert(5);
	intList.Insert(2);
	intList.Insert(8);
	intList.Insert(4);

	cout << "\nDisplaying intList...\n";
	intList.Display();

	cout << "\nRemoving \"8\" from intList...\n";
	intList.Remove(8);

	cout << "\nDisplaying intList...\n";
	intList.Display();

	cout << "\nInserting 5 items into stringList...\n";
	stringList.Insert("Bob");
	stringList.Insert("Tim");
	stringList.Insert("Fox");
	stringList.Insert("Mike");
	stringList.Insert("Jen");

	cout << "\nDisplaying stringList...\n";
	stringList.Display();

	cout << "\nRemoving \"Fox\" and \"Tim\" from stringList...\n";
	stringList.Remove("Fox");
	stringList.Remove("Tim");

	cout << "\nDisplaying stringList...\n";
	stringList.Display();

	cout << "\nInserting 10 items into vectorList...\n";
	vectorList.Insert(Vector(1, 2, 3));
	vectorList.Insert(Vector(4, 5, 6));
	vectorList.Insert(Vector(7, 8, 9));
	vectorList.Insert(Vector(10, 11, 12));
	vectorList.Insert(Vector(13, 14, 15));
	vectorList.Insert(Vector(16, 17, 18));
	vectorList.Insert(Vector(19, 20, 21));
	vectorList.Insert(Vector(22, 23, 24));
	vectorList.Insert(Vector(25, 26, 27));
	vectorList.Insert(Vector(28, 29, 30));

	cout << "\nDisplaying vectorList...\n";
	vectorList.Display();

	cout << "\nRemoving all but [1, 2, 3] Vector...\n";
	vectorList.Remove(Vector(4, 5, 6));
	vectorList.Remove(Vector(7, 8, 9));
	vectorList.Remove(Vector(10, 11, 12));
	vectorList.Remove(Vector(13, 14, 15));
	vectorList.Remove(Vector(16, 17, 18));
	vectorList.Remove(Vector(19, 20, 21));
	vectorList.Remove(Vector(22, 23, 24));
	vectorList.Remove(Vector(25, 26, 27));
	vectorList.Remove(Vector(28, 29, 30));

	cout << "\nDisplaying vectorList...\n";
	vectorList.Display();

	cout << "\nDone.\n";

	return;
}